package com.cyt.sys.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.sys.model.po.SysDict;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.model.vo.SysDictViewVo;
import com.cyt.sys.model.vo.SysDictVo;

import java.util.List;


/**
 * 基础部分-数据字典service接口类
 *
 * @author shengQiang yu
 * @date 2019-04-03 10:29
 */
public interface SysDictService extends BaseService<SysDict> {

    /**
     * 分页查询
     *
     * @param sysDictVo 对象
     * @param pageSize 当前页面
     * @param pageNum 页面数量
     * @return ReturnResult 对象
     * @author shengQiang yu
     * @date 2018-11-29 15:43
     */
    ReturnResult page(SysDictVo sysDictVo, int pageSize, int pageNum);

    /**
     * 添加或修改
     *
     * @param sysDictVo 对象
     * @param currentUser 当前用户
     * @return ReturnResult 对象
     * @author shengQiang yu
     * @date 2018-11-29 15:43
     */
    ReturnResult addOrUpdate(SysDictVo sysDictVo, SysUser currentUser);

    /**
     * 根据主键id集合软删除
     *
     * @param ids 主键id集合，多个以‘，’隔开
     * @param currentUser 当前用户
     * @return ReturnResult 对象
     * @author shengQiang yu
     * @date 2018-11-29 15:43
     */
    ReturnResult removeByIds(String ids, SysUser currentUser);

    /**
     * 查询对象集合
     *
     * @param sysDictVo 对象
     * @return List 对象集合
     * @author shengQiang yu
     * @date 2018-11-29 15:43
     */
    List<SysDict> listExample(SysDictVo sysDictVo);

    /**
     * 左边分页查询
     *
     * @param sysDictVo 对象
     * @param pageSize 当前页面
     * @param pageNum 页面数量
     * @return ReturnResult 对象
     * @author shengQiang yu
     * @date 2018-11-29 15:43
     */
    ReturnResult pageLeft(SysDictVo sysDictVo, int pageSize, int pageNum);

    public List<SysDictViewVo> findBaseDictViewVoList(SysDict sysDict);

    SysDict listByCode(String code);

    /**
     * 获取所有的科目 科目选择器
     *
     * @param sysDictVo 接收参数的对象
     * @return ReturnResult
     * @author Jun Han
     * @date 2019/12/2 14:28
     */
    ReturnResult selector(SysDictVo sysDictVo);

}
